//SUSPEND
void Converter::suspend()
{
bool gnome_power1 = false;
bool gnome_power2 = false;
bool hal_works = false;
QDBusMessage response;

gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh suspend");
gnome_power2 = QProcess::startDetached("gnome-power-cmd suspend");
if(!gnome_power1 && !gnome_power2 && verbose)
  qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";

if(!gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.Hal",
    "/org/freedesktop/Hal/devices/computer",
    "org.freedesktop.Hal.Device.SystemPowerManagement",
    QDBusConnection::systemBus());
  response = powermanagement.call("Suspend",0);
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
  else
    hal_works = true;
}

if(!hal_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.DeviceKit.Power",
    "/org/freedesktop/DeviceKit/Power",
    "org.freedesktop.DeviceKit.Power", QDBusConnection::systemBus());
  response = powermanagement.call("Suspend");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
}
}

//SHUTDOWN	(QProcess::startDetached("shutdown -s -f -t 00");)
void Converter::shutdown()
{ bool shutdown_works = false;
bool gnome_power1 = false;
bool gnome_power2 = false;
bool hal_works = false;
QDBusMessage response;

QDBusInterface gnomeSessionManager("org.gnome.SessionManager",
  "/org/gnome/SessionManager", "org.gnome.SessionManager",
  QDBusConnection::sessionBus());
response = gnomeSessionManager.call("RequestShutdown");
if(response.type() == QDBusMessage::ErrorMessage){
  if(verbose)
    qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh shutdown");
  gnome_power2 = QProcess::startDetached("gnome-power-cmd shutdown");
  if(verbose && !gnome_power1 && !gnome_power2)
    qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
}
else
  shutdown_works = true;

QDBusInterface kdeSessionManager("org.kde.ksmserver", "/KSMServer",
  "org.kde.KSMServerInterface", QDBusConnection::sessionBus());
response = kdeSessionManager.call("logout", 0, 2, 2);
if(response.type() == QDBusMessage::ErrorMessage){
  if(verbose)
    qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
}
else
  shutdown_works = true;

if(!shutdown_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.Hal",
    "/org/freedesktop/Hal/devices/computer",
    "org.freedesktop.Hal.Device.SystemPowerManagement",
    QDBusConnection::systemBus());
  response = powermanagement.call("Shutdown");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
  else
    hal_works = true;
}

if(!hal_works && !shutdown_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.ConsoleKit",
    "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager",
    QDBusConnection::systemBus());
  response = powermanagement.call("Stop");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
    QProcess::startDetached("sudo shutdown -P now");
  }
}
}

//REBOOT
void Converter::reboot()
{bool reboot_works = false;
bool gnome_power1 = false;
bool gnome_power2 = false;
bool hal_works = false;
QDBusMessage response;

QDBusInterface gnomeSessionManager("org.gnome.SessionManager",
  "/org/gnome/SessionManager", "org.gnome.SessionManager",
  QDBusConnection::sessionBus());
response = gnomeSessionManager.call("RequestReboot");
if(response.type() == QDBusMessage::ErrorMessage){
  if(verbose)
    qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh reboot");
  gnome_power2 = QProcess::startDetached("gnome-power-cmd reboot");
  if(verbose && !gnome_power1 && !gnome_power2)
    qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
}
else
  reboot_works = true;

QDBusInterface kdeSessionManager("org.kde.ksmserver", "/KSMServer",
  "org.kde.KSMServerInterface", QDBusConnection::sessionBus());
response = kdeSessionManager.call("logout", 0, 2, 1);
if(response.type() == QDBusMessage::ErrorMessage){
  if(verbose)
    qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
}
else
  reboot_works = true;

if(!reboot_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.Hal",
    "/org/freedesktop/Hal/devices/computer",
    "org.freedesktop.Hal.Device.SystemPowerManagement",
    QDBusConnection::systemBus());
  response = powermanagement.call("Reboot");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
  else
    hal_works = true;
}

if(!hal_works && !reboot_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.ConsoleKit",
    "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager",
    QDBusConnection::systemBus());
  response = powermanagement.call("Restart");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
    QProcess::startDetached("sudo shutdown -r now");
  }
}}
//HIBERNATE
void Converter::hibernate()
{bool gnome_power1 = false;
bool gnome_power2 = false;
bool hal_works = false;
QDBusMessage response;

gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh hibernate");
gnome_power2 = QProcess::startDetached("gnome-power-cmd hibernate");
if(!gnome_power1 && !gnome_power2 && verbose)
  qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";

if(!gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.Hal",
    "/org/freedesktop/Hal/devices/computer",
    "org.freedesktop.Hal.Device.SystemPowerManagement",
    QDBusConnection::systemBus());
  response = powermanagement.call("Hibernate");
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
  else
    hal_works = true;
}

if(!hal_works && !gnome_power1 && !gnome_power2){
  QDBusInterface powermanagement("org.freedesktop.DeviceKit.Power", "/org/freedesktop/DeviceKit/Power",
    "org.freedesktop.DeviceKit.Power", QDBusConnection::systemBus());
  if(response.type() == QDBusMessage::ErrorMessage){
    if(verbose)
      qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
  }
}}
//LOCK
void Converter::lock()
{
if(system("gnome-screensaver-command -l") && system("dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock"))
QMessageBox::warning(this, "Error", "Unable to lock computer.", QMessageBox::Ok, NULL);

}

void MainWindow::on_pushButton_clicked()
{
    QProcess process;;

    process.start("~/helloworld.out");
    process.waitForStarted();
    process.waitForFinished();
    process.close();
}
